Skip to main content

Repeatable Segments

The route segments can be repeated.

  • Zero or more times by suffixing the star * modifier

  • One or more times by suffixing the plus + modifier

Modifier - *โ€‹

If you need to match multiple route segments like /a/b/c with including /, you should suffix the * modifier.

Exampleโ€‹

import { routeMatcher } from "@open-tech-world/route-matcher";

routeMatcher("/:chapters*", "/");

/*
[
{
"type": "DYNAMIC",
"params": [
{
"name": "chapters",
"value": undefined
}
]
}
]
*/

routeMatcher("/:chapters*", "/a");

/*
[
{
"type": "DYNAMIC",
"params": [
{
"name": "chapters",
"value": "a"
}
]
}
]
*/

routeMatcher("/:chapters*", "/a/b");

/*
[
{
"type": "DYNAMIC",
"params": [
{
"name": "chapters",
"value": "a/b"
}
]
}
]
*/

routeMatcher("/:chapters*", "/a/b/c");

/*
[
{
"type": "DYNAMIC",
"params": [
{
"name": "chapters",
"value": "a/b/c"
}
]
}
]
*/

Modifier - +โ€‹

If you need to match multiple route segments like /a/b/c with atleast one segment required, you should suffix the + modifier.

Exampleโ€‹

import { routeMatcher } from "@open-tech-world/route-matcher";

routeMatcher("/:chapters+", "/"); // null

routeMatcher("/:chapters+", "/a");

/*
[
{
"type": "DYNAMIC",
"params": [
{
"name": "chapters",
"value": "a"
}
]
}
]
*/

routeMatcher("/:chapters+", "/a/b");

/*
[
{
"type": "DYNAMIC",
"params": [
{
"name": "chapters",
"value": "a/b"
}
]
}
]
*/

routeMatcher("/:chapters+", "/a/b/c");

/*
[
{
"type": "DYNAMIC",
"params": [
{
"name": "chapters",
"value": "a/b/c"
}
]
}
]
*/